package com.zjc615.dao;

import com.zjc615.entity.NewBeeMallShoppingCartItem;
import com.zjc615.util.PageQueryUtil;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface NewBeeMallShoppingCartItemMapper {
    /**
     * 删除一条记录
     * @param cartItemId
     * @return
     */
    int deleteByPrimaryKey(Long cartItemId);


    int insert(NewBeeMallShoppingCartItem record);

    /**
     * 保存一条新纪录
     * @param record
     * @return
     */
    int insertSelective(NewBeeMallShoppingCartItem record);

    /**
     * 根据主键查询记录
     * @param cartItemId
     * @return
     */
    NewBeeMallShoppingCartItem selectByPrimaryKey(Long cartItemId);

    /**
     * 根据userId和goodsId查询记录
     * @param newBeeMallUserId
     * @param goodsId
     * @return
     */
    NewBeeMallShoppingCartItem selectByUserIdAndGoodsId(@Param("newBeeMallUserId") Long newBeeMallUserId, @Param("goodsId") Long goodsId);

    /**
     * 根据userId和number 字段或获取固定数量的购物列表数据
     * @param newBeeMallUserId
     * @param number
     * @return
     */
    List<NewBeeMallShoppingCartItem> selectByUserId(@Param("newBeeMallUserId") Long newBeeMallUserId, @Param("number") int number);

    /**
     * 根据userId和购物项id列表获取购物项列表数据
     * @param newBeeMallUserId
     * @param cartItemIds
     * @return
     */
    List<NewBeeMallShoppingCartItem> selectByUserIdAndCartItemIds(@Param("newBeeMallUserId") Long newBeeMallUserId, @Param("cartItemIds") List<Long> cartItemIds);

    /**
     * 根据userId查询当前用户已经添加了多少条记录
     * @param newBeeMallUserId
     * @return
     */
    int selectCountByUserId(Long newBeeMallUserId);

    /**
     * 修改记录
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(NewBeeMallShoppingCartItem record);

    int updateByPrimaryKey(NewBeeMallShoppingCartItem record);

    int deleteBatch(List<Long> ids);

    /**
     * 购物项列表查询，使用分页功能
     * @param pageUtil
     * @return
     */
    List<NewBeeMallShoppingCartItem> findMyNewBeeMallCartItems(PageQueryUtil pageUtil);

    int getTotalMyNewBeeMallCartItems(PageQueryUtil pageUtil);
}